package com.apartment.own.domain;

import com.apartment.common.annotation.Excel;
import com.apartment.common.core.domain.BaseEntity;
import com.apartment.own.domain.group.InsertResourceMode;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.*;
import java.util.List;

/**
 * 房源对象 own_res_house_resource
 * 
 * @author @Dog_E
 * @date 2020-08-28
 */
@Data
@ApiModel("房源")
public class OwnResHouseResource extends BaseEntity
{
    private static final long serialVersionUID = 1L;


    /** ID */

    @ApiModelProperty("ID")
    private String id;



    /** 删除标志（0代表存在 2代表删除） */

    @ApiModelProperty("删除标志（0代表存在 2代表删除）")
    private String delFlag;

    /** ???租房模式 数据类型待确认  0整租,1合租 */
    @ApiModelProperty("???租房模式 数据类型待确认  0整租,1合租")
    @Excel(name = "???租房模式 数据类型待确认  0整租,1合租")
    @NotNull(message = "请填写,租房模式",groups = {InsertResourceMode.class})
    private Integer leaseModel;

    @ApiModelProperty("省->id")
    @Excel(name = "省")
    @NotNull(message = "请填写,省",groups = {InsertResourceMode.class})
    private Long provinceId;

    @ApiModelProperty("省->文字")
    @Excel(name = "省")
    @NotNull(message = "请填写,省",groups = {InsertResourceMode.class})
    private String provinceValue;




    @ApiModelProperty("市")
    @Excel(name = "市")
    @NotNull(message = "请填写,市",groups = {InsertResourceMode.class})
    private Long cityId;

    @ApiModelProperty("市")
    @Excel(name = "市")
    @NotNull(message = "请填写,市",groups = {InsertResourceMode.class})
    private String cityValue;

    @ApiModelProperty("区")
    @NotNull(message = "请填写,区",groups = {InsertResourceMode.class})
    @Excel(name = "区")
    private Long districtId;

    @ApiModelProperty("区")
    @NotNull(message = "请填写,区",groups = {InsertResourceMode.class})
    @Excel(name = "区")
    private String districtValue;



    @ApiModelProperty("小区位置信息")
    @NotNull(message = "请填写,小区位置信息",groups = {InsertResourceMode.class})
    @Excel(name = "小区位置信息")
    private String housingEstate;

    @ApiModelProperty("街道")
    @NotNull(message = "请填写,街道",groups = {InsertResourceMode.class})
    @Excel(name = "街道")
    private String street;

    @ApiModelProperty("街道的那一号")
    @NotNull(message = "请填写,街道的那一号",groups = {InsertResourceMode.class})
    @Excel(name = "街道的那一号")
    private String laneNo;

    @ApiModelProperty("楼号")
    @Excel(name = "楼号")
    @NotNull(message = "请填写,楼号",groups = {InsertResourceMode.class})
    private Integer no;

    @ApiModelProperty("单元号")
    @Excel(name = "单元号")
    @NotNull(message = "请填写,单元号",groups = {InsertResourceMode.class})
    private Integer unit;

    @ApiModelProperty("房间号")
    @Excel(name = "房间号")
    @NotNull(message = "请填写,房间号",groups = {InsertResourceMode.class})
    private Integer houseNo;

    @ApiModelProperty("楼层")
    @Excel(name = "楼层")
    @NotNull(message = "请填写,楼层",groups = {InsertResourceMode.class})
    private Integer level;

    @ApiModelProperty("总楼层")
    @Excel(name = "总楼层")
    @NotNull(message = "请填写,总楼层",groups = {InsertResourceMode.class})
    private Integer countlevel;

    @ApiModelProperty("房屋总面积")
    @Excel(name = "房屋总面积")
    @NotNull(message = "请填写,房屋总面积",groups = {InsertResourceMode.class})
    private Integer area;

    @ApiModelProperty("室  改造前")
    @Excel(name = "室")
    @NotNull(message = "请填写,室",groups = {InsertResourceMode.class})
    private Integer beforeBedRoom;

    @ApiModelProperty("厅  改造前")
    @NotNull(message = "请填写,厅",groups = {InsertResourceMode.class})
    @Excel(name = "厅  改造前")
    private Integer beforeDrawingRoom;


    @ApiModelProperty("卫  改造前")
    @NotNull(message = "请填写,卫",groups = {InsertResourceMode.class})
    @Excel(name = "卫  改造前")
    private Integer beforeRestRoom;

    @ApiModelProperty("朝向  改造前")
    @NotNull(message = "请填写,朝向",groups = {InsertResourceMode.class})
    @Excel(name = "朝向  改造前")
    private String beforeBuildOrientation;

    @ApiModelProperty("室  改造后")
    @Min(value = 1,message = "请填写,室",groups = {InsertResourceMode.class})
    @Excel(name = "室  改造后")
    private Integer endBedRoom;

    @ApiModelProperty("厅  改造后")
    @NotNull(message = "请填写,厅",groups = {InsertResourceMode.class})
    @Excel(name = "厅  改造后")
    private Integer endDrawingRoom;

    @ApiModelProperty("卫  改造后")
    @NotNull(message = "请填写,卫",groups = {InsertResourceMode.class})
    @Excel(name = "卫  改造后")
    private Integer endRestRoom;

    @ApiModelProperty("朝向  改造后")
    @NotNull(message = "请填写,朝向",groups = {InsertResourceMode.class})
    @Excel(name = "朝向  改造后")
    private String endBuildOrientation;

    @ApiModelProperty("字典表 收房类型 ")
    @Excel(name = "字典表 收房类型 ")
    private Long buyingType;

    @ApiModelProperty("产权类型")
    @Excel(name = "产权类型")
    private String propertyType;

    @ApiModelProperty("房产证编号")
    @Excel(name = "房产证编号")
    private String housePropertyCardId;


    @ApiModelProperty("房产证姓名")
    private String housePropertyCardName;

    @ApiModelProperty("产权地址")
    @Excel(name = "产权地址")
    private String housePropertyAddress;

    @ApiModelProperty("???房源管家 所属门店和直属管理的管家 外键")
    @Excel(name = "???房源管家 所属门店和直属管理的管家 外键")
    //@NotNull(message = "请填写,",groups = {InsertResourceMode.class})
    private Long resourceSteward;

    @ApiModelProperty(" ???租房管家 租客在租房渠道看到的管家  外键")
    @Excel(name = " ???租房管家 租客在租房渠道看到的管家  外键")
    @NotNull(message = "请填写,",groups = {InsertResourceMode.class})
    private Long salesSteward;

    @ApiModelProperty("房屋状态")
    @Excel(name = "房屋状态")
    private Long houseStase;

    @ApiModelProperty("公寓楼高")
    @Excel(name = "公寓楼高")
    private Integer apartmentLevel;

    @ApiModelProperty("房源编号")
    @Excel(name = "房源编号")
    private String resourceNo;

    @ApiModelProperty("房间配置信息,字符串切割,关联字典表")
    @Excel(name = "房间配置信息,字符串切割,关联字典表")
    @NotNull(message = "参数不正确",groups = {InsertResourceMode.class})
    private String configuration;

    @ApiModelProperty("房间图片列表,字符串切割")
    @Excel(name = "房间图片列表,字符串切割")
    @NotNull(message = "参数不正确",groups = {InsertResourceMode.class})
    private String images;

    @ApiModelProperty("房屋特色,字符切割,关联字典")
    @Excel(name = "房屋特色,字符切割,关联字典")
    @NotNull(message = "参数不正确",groups = {InsertResourceMode.class})
    private String feature;

    @ApiModelProperty("介绍")
    @Excel(name = "介绍")
    @NotNull(message = "参数不正确",groups = {InsertResourceMode.class})
    private String recommend;


    /* 关系属性 */
    @TableField(exist = false)
    @Null(message = "请填写,省",groups = {InsertResourceMode.class})
    @ApiModelProperty("房间列表:这个里边的值 添加房源的时候不用传 ")
    List<OwnResHouseRoomConf> ownResHouseRoomConfList;

    @ApiModelProperty("房屋合同")
    @NotNull(message = "请填写,省",groups = {InsertResourceMode.class})
    @TableField(exist = false)
    OwnResHouseContract ownResHouseContract;

    @ApiModelProperty("生活费用")
    @NotNull(message = "请填写,省",groups = {InsertResourceMode.class})
    @TableField(exist = false)
    List<OwnResPropertyFee> ownResPropertyFeeList;

    @ApiModelProperty("房间物品")
    @NotNull(message = "请填写,省",groups = {InsertResourceMode.class})
    @TableField(exist = false)
    List<OwnResArticleInventory> ownResArticleInventories;



}
